<?php

/**
 * ClassName:图片存储工具
 * @auditor LeiJunXiang
 * @time 2024/12/30
 */

namespace app\factory\tool;

class ImageStorageTool
{
    const TOOL_IMAGE_STORAGE_TOOL = "ImageStorageTool";
    /**
     * (true/false)开始存储(base64图片，存储路径)
     */
    public function start($base64Image, $path)
    {
        if(empty($base64Image)||empty($path)){
            return ;
        }
        // 去除数据 URI 头:
        // 使用正则表达式检查 Base64 字符串是否包含 data:image/png;base64, 这样的数据 URI 头。
        // 如果包含，则提取 MIME 类型（例如 png），并去除数据 URI 头部分。
        if (preg_match('/^data:image\/(\w+);base64,/', $base64Image, $matches)) {
            // 获取图片的 MIME 类型
            $mimeType = $matches[1];
            // 去除数据 URI 头
            $base64Image = substr($base64Image, strpos($base64Image, ',') + 1);
        }

        // 解码 Base64 字符串:
        // 使用 base64_decode 函数将 Base64 字符串解码为二进制数据。
        $imageData = base64_decode($base64Image);

        if ($imageData === false) {
            // 解码失败
            return false;
        }

        // 保存为文件:
        // 使用 file_put_contents 函数将解码后的二进制数据保存为文件。
        // 指定保存文件的路径和文件名。
        $result = file_put_contents($path, $imageData);
        $flag = true;
        if(!$result){
            $flag = false;
        }
        return $flag;
    }

}